package action;

import entity.User;
import message.Message;
import util.SocketUtil;

import java.io.*;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class UserAction {
    static Scanner sc = new Scanner(System.in);

    /**
     * 注册功能
     * 根据传入的用户信息，将行为和用户信息发送到服务端，在服务端进行判断账户是否存在
     * 再通过服务端返回的值判断注册成功还是失败
     */
    public static void register(User user) throws IOException, SQLException, ClassNotFoundException {
        Message<User>message=new Message<>("register",user);
        SocketUtil.sendMessage(message);
    }

    /**
     * 登录功能
     * 根据传入的用户信息，将行为和用户信息发送到服务端，在服务端进行判断账户是否存在，
     * 密码是否正确，根据服务端的返回值进行判断登录成功还是失败,
     * 登录成功展示LoginVic，登录失败展示LoginDef
     * 登录成功后给当地用户分配一个未使用过的端口，并将状态设置为在线。
     */
    public static Integer login(User user) throws IOException, SQLException, ClassNotFoundException {
        Message<User>message=new Message<>("login",user);
        Integer result=SocketUtil.sendMessage(message);
        return result;
    }

    /**
     * 服务器判断用户操作忘记密码时，账号和手机号是否匹配
     */
    public static boolean forgetNext(User user) throws IOException {
        /**
         * 代码区
         */
        return true;
    }
    /**
     * 修改密码操作
     * 将用户信息和操作打包发送给服务器，由服务器进行修改操作
     */
    public static Integer changePassword(User user) throws IOException {
        String username="";
        String password="";
        String password_new="";

        //输入之前的账号和密码
        username="";//UI得到的账号
        password="";//UI得到的密码
        password_new="";//UI得到的新密码

        //创建一个hashmap存入账号和密码
        Map<String,String> map=new HashMap<>();
        map.put("username",username);
        map.put("password",password);
        map.put("password_new",password_new);
        Message<Map<String,String>>message=new Message<>("changePassword",map);
        Integer result=SocketUtil.sendMessage(message);

        /**
         *  if (result==1){  //修改成功
         *
         *         }else if (result==-1){ //修改失败
         *
         *         }else {//账户不存在,或者密码错误
         *
         *         }
         */

        return result;
    }
    /**(无念无风)
     * 发送信息给用户
     * 将要发送的信息发送给服务端处理
     */
    public static void sendMessage2User(String goalName1, String goalName2, String str) throws IOException {
        // 创建一个HashMap来存储目标用户名和消息内容
        Map<String, String> messageContent = new HashMap<>();
        messageContent.put("goalName1", goalName1);
        messageContent.put("goalName2", goalName2);
        messageContent.put("message", str);

        // 创建一个Message对象，类型为"sendMessage"，并包含消息内容
        Message<Map<String, String>> message = new Message<>("sendMessage", messageContent);

        // 使用SocketUtil发送消息到服务端
        SocketUtil.sendMessage(message);
    }

    /**(星璃)
     * 发送信息到群聊
     * 将需要发送的信息和群聊名称发送给服务端处理
     * @param groupName 群聊昵称，
     * @param msg 需要发送的信息
     * @throws IOException
     */
    public static void sendMessage2Group(String groupName,String msg) throws IOException {
        // 创建一个HashMap来存储目标群名和消息内容
        Map<String, String> messageContent = new HashMap<>();
        messageContent.put("groupName", groupName);
        messageContent.put("msg", msg);

        // 创建一个Message对象，类型为"sendMessage2Group"，并包含消息内容
        Message<Map<String, String>> message = new Message<>("sendMessage2Group", messageContent);

        // 使用SocketUtil发送消息到服务端
        SocketUtil.sendMessage(message);

    }
    /**
     * 私发红包
     */
    public static void sendRedBag2User(User user) throws IOException {

    }
    /**
     * 群发红包
     */
    public static void sendRedBag2Group(String groupName) throws IOException {

    }

    /**(半知)
     * 添加好友
     * 将当前用户账号和添加的用户的账号打包发送给服务端
     */
    public static void addFriend(String localUsername,String goalUsername) throws IOException {
        Map<String,String> map=new HashMap<>();
        map.put("localUsername",localUsername);
        map.put("goalUsername",goalUsername);
        Message<Map<String,String>>message=new Message<>("addFriend",map);
        SocketUtil.sendMessage(message);
    }

}
